home *** CD-ROM | disk | FTP | other *** search
/ IRIX 6.2 Development Libraries / SGI IRIX 6.2 Development Libraries.iso / dist / complib.idb / usr / share / catman / p_man / cat3 / complib / cggsvp.z / cggsvp
Text File  |  1996-03-14  |  6KB  |  199 lines

  1.  
  2.  
  3.  
  4. CCCCGGGGGGGGSSSSVVVVPPPP((((3333FFFF))))                                                          CCCCGGGGGGGGSSSSVVVVPPPP((((3333FFFF))))
  5.  
  6.  
  7.  
  8. NNNNAAAAMMMMEEEE
  9.      CGGSVP - compute unitary matrices U, V and Q such that   N-K-L K L
  10.      U'*A*Q = K ( 0 A12 A13 ) if M-K-L >= 0
  11.  
  12. SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
  13.      SUBROUTINE CGGSVP( JOBU, JOBV, JOBQ, M, P, N, A, LDA, B, LDB, TOLA, TOLB,
  14.                         K, L, U, LDU, V, LDV, Q, LDQ, IWORK, RWORK, TAU, WORK,
  15.                         INFO )
  16.  
  17.          CHARACTER      JOBQ, JOBU, JOBV
  18.  
  19.          INTEGER        INFO, K, L, LDA, LDB, LDQ, LDU, LDV, M, N, P
  20.  
  21.          REAL           TOLA, TOLB
  22.  
  23.          INTEGER        IWORK( * )
  24.  
  25.          REAL           RWORK( * )
  26.  
  27.          COMPLEX        A( LDA, * ), B( LDB, * ), Q( LDQ, * ), TAU( * ), U(
  28.                         LDU, * ), V( LDV, * ), WORK( * )
  29.  
  30. PPPPUUUURRRRPPPPOOOOSSSSEEEE
  31.      CGGSVP computes unitary matrices U, V and Q such that
  32.                    L ( 0     0   A23 )
  33.                M-K-L ( 0     0    0  )
  34.  
  35.                       N-K-L  K    L
  36.              =     K ( 0    A12  A13 )  if M-K-L < 0;
  37.                  M-K ( 0     0   A23 )
  38.  
  39.                     N-K-L  K    L
  40.       V'*B*Q =   L ( 0     0   B13 )
  41.                P-L ( 0     0    0  )
  42.  
  43.      where the K-by-K matrix A12 and L-by-L matrix B13 are nonsingular upper
  44.      triangular; A23 is L-by-L upper triangular if M-K-L >= 0, otherwise A23
  45.      is (M-K)-by-L upper trapezoidal.  K+L = the effective numerical rank of
  46.      the (M+P)-by-N matrix (A',B')'.  Z' denotes the conjugate transpose of Z.
  47.  
  48.      This decomposition is the preprocessing step for computing the
  49.      Generalized Singular Value Decomposition (GSVD), see subroutine CGGSVD.
  50.  
  51.  
  52. AAAARRRRGGGGUUUUMMMMEEEENNNNTTTTSSSS
  53.      JOBU    (input) CHARACTER*1
  54.              = 'U':  Unitary matrix U is computed;
  55.              = 'N':  U is not computed.
  56.  
  57.      JOBV    (input) CHARACTER*1
  58.              = 'V':  Unitary matrix V is computed;
  59.              = 'N':  V is not computed.
  60.  
  61.  
  62.  
  63.                                                                         PPPPaaaaggggeeee 1111
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70. CCCCGGGGGGGGSSSSVVVVPPPP((((3333FFFF))))                                                          CCCCGGGGGGGGSSSSVVVVPPPP((((3333FFFF))))
  71.  
  72.  
  73.  
  74.      JOBQ    (input) CHARACTER*1
  75.              = 'Q':  Unitary matrix Q is computed;
  76.              = 'N':  Q is not computed.
  77.  
  78.      M       (input) INTEGER
  79.              The number of rows of the matrix A.  M >= 0.
  80.  
  81.      P       (input) INTEGER
  82.              The number of rows of the matrix B.  P >= 0.
  83.  
  84.      N       (input) INTEGER
  85.              The number of columns of the matrices A and B.  N >= 0.
  86.  
  87.      A       (input/output) COMPLEX array, dimension (LDA,N)
  88.              On entry, the M-by-N matrix A.  On exit, A contains the
  89.              triangular (or trapezoidal) matrix described in the Purpose
  90.              section.
  91.  
  92.      LDA     (input) INTEGER
  93.              The leading dimension of the array A. LDA >= max(1,M).
  94.  
  95.      B       (input/output) COMPLEX array, dimension (LDB,N)
  96.              On entry, the P-by-N matrix B.  On exit, B contains the
  97.              triangular matrix described in the Purpose section.
  98.  
  99.      LDB     (input) INTEGER
  100.              The leading dimension of the array B. LDB >= max(1,P).
  101.  
  102.      TOLA    (input) REAL
  103.              TOLB    (input) REAL TOLA and TOLB are the thresholds to
  104.              determine the effective numerical rank of matrix B and a subblock
  105.              of A. Generally, they are set to TOLA = MAX(M,N)*norm(A)*MACHEPS,
  106.              TOLB = MAX(P,N)*norm(B)*MACHEPS.  The size of TOLA and TOLB may
  107.              affect the size of backward errors of the decomposition.
  108.  
  109.      K       (output) INTEGER
  110.              L       (output) INTEGER On exit, K and L specify the dimension
  111.              of the subblocks described in Purpose section.  K + L = effective
  112.              numerical rank of (A',B')'.
  113.  
  114.      U       (output) COMPLEX array, dimension (LDU,M)
  115.              If JOBU = 'U', U contains the unitary matrix U.  If JOBU = 'N', U
  116.              is not referenced.
  117.  
  118.      LDU     (input) INTEGER
  119.              The leading dimension of the array U. LDU >= max(1,M) if JOBU =
  120.              'U'; LDU >= 1 otherwise.
  121.  
  122.      V       (output) COMPLEX array, dimension (LDV,M)
  123.              If JOBV = 'V', V contains the unitary matrix V.  If JOBV = 'N', V
  124.              is not referenced.
  125.  
  126.  
  127.  
  128.  
  129.                                                                         PPPPaaaaggggeeee 2222
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136. CCCCGGGGGGGGSSSSVVVVPPPP((((3333FFFF))))                                                          CCCCGGGGGGGGSSSSVVVVPPPP((((3333FFFF))))
  137.  
  138.  
  139.  
  140.      LDV     (input) INTEGER
  141.              The leading dimension of the array V. LDV >= max(1,P) if JOBV =
  142.              'V'; LDV >= 1 otherwise.
  143.  
  144.      Q       (output) COMPLEX array, dimension (LDQ,N)
  145.              If JOBQ = 'Q', Q contains the unitary matrix Q.  If JOBQ = 'N', Q
  146.              is not referenced.
  147.  
  148.      LDQ     (input) INTEGER
  149.              The leading dimension of the array Q. LDQ >= max(1,N) if JOBQ =
  150.              'Q'; LDQ >= 1 otherwise.
  151.  
  152.      IWORK   (workspace) INTEGER array, dimension (N)
  153.  
  154.      RWORK   (workspace) REAL array, dimension (2*N)
  155.  
  156.      TAU     (workspace) COMPLEX array, dimension (N)
  157.  
  158.      WORK    (workspace) COMPLEX array, dimension (max(3*N,M,P))
  159.  
  160.      INFO    (output) INTEGER
  161.              = 0:  successful exit
  162.              < 0:  if INFO = -i, the i-th argument had an illegal value.
  163.  
  164. FFFFUUUURRRRTTTTHHHHEEEERRRR DDDDEEEETTTTAAAAIIIILLLLSSSS
  165.      The subroutine uses LAPACK subroutine CGEQPF for the QR factorization
  166.      with column pivoting to detect the effective numerical rank of the a
  167.      matrix. It may be replaced by a better rank determination strategy.
  168.  
  169.  
  170.  
  171.  
  172.  
  173.  
  174.  
  175.  
  176.  
  177.  
  178.  
  179.  
  180.  
  181.  
  182.  
  183.  
  184.  
  185.  
  186.  
  187.  
  188.  
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.                                                                         PPPPaaaaggggeeee 3333
  196.  
  197.  
  198.  
  199.